Data transfer protocols transfer data between and among a wide variety of devices. Devices have a range of memory formats, each with particular storage characteristics. One memory format, block memory, erases one or more blocks of memory before storing data. The amounts of time taken by a block memory device to erase a block of memory and/or store data frequently fluctuate. In addition, different types of block memory, such as NAND and NOR flash, differ in the durations it takes to erase and/or store.
Most data transfer protocols define a fixed-sized data frame to be used across all memory types. For some types of block memory, however, a fixed-sized data frame may be inefficient because the size of the data frame and the number of such frames sent during a data transfer may be ill-matched to the storage characteristics of a block memory device. Currently, it is common practice to chunk the data frame into predetermined, fixed chunk sizes and buffer the data chunks to transfer the data frame in parallel within the target device.